package com.bincloud.vue.admin.common.util;

import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.util.Date;

/**
 * @Description: 日期时间工具类
 * @Author: bincloud, mvpzhou
 * @Date: Create By bincloud, mvpzhou on 2022/2/27
 */
@SuppressWarnings("unused")
public class DateUtils {
    private DateUtils() {}

    /**
     * LocalDateTime 转换为 Date
     * 系统时区
     * @param ldt {@link LocalDateTime}
     * @return {@link Date}
     */
    public static Date convert(LocalDateTime ldt) {
        return Date.from(ldt.atZone(ZoneId.systemDefault()).toInstant());
    }

    /**
     * LocalDateTime 转换为 Date
     * 北京时区+8
     * @param ldt {@link LocalDateTime}
     * @return {@link Date}
     */
    public static Date convertPlus8(LocalDateTime ldt) {
        return Date.from(ldt.toInstant(ZoneOffset.of("+8")));
    }

    /**
     * Date 转换为 LocalDateTime
     * 系统时区
     * @param d {@link Date}
     * @return {@link LocalDateTime}
     */
    public static LocalDateTime convert(Date d) {
        return d.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
    }

    /**
     * Date 转换为 LocalDateTime
     * 北京时区+8
     * @param d {@link Date}
     * @return {@link LocalDateTime}
     */
    public static LocalDateTime convertPlus8(Date d) {
        return d.toInstant().atZone(ZoneOffset.of("+8")).toLocalDateTime();
    }
}
